﻿using FitnessClubManager.BLL;
using FitnessClubManager.DAL;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FitnessClubManager.GUI.TacNghiep
{
    public partial class FormGiaHan : Form
    {
        LichSuGiaoDich _lichSu;
        KhachHang _khachHang;
        public FormGiaHan(LichSuGiaoDich lichSu, KhachHang khachHang = null)
        {
            InitializeComponent();
            cmbLoaiThe.SelectedIndex = 0;
            cmbLoaiThe_SelectedIndexChanged(this, null);
            if (lichSu != null)
            {
                //Gia hạn
                txtHoTen.Text = lichSu.KhachHang.Ho + " " + lichSu.KhachHang.Ten;
                cmbTu.Visible = false;
                if (lichSu.SanPham.LoaiSanPham == (int)LOAISANPHAM.The)
                    lbSanPham.Text = "Mã thẻ";
                else
                    lbSanPham.Text = "Mã tủ";
                txtMaSanPham.Text = lichSu.MaSanPham;
                _lichSu = lichSu;
            }
            else if (khachHang != null)
            {
                //Đăng ký tủ
                _khachHang = khachHang;
                txtMaSanPham.Visible = false;
                txtHoTen.Text = _khachHang.Ho + " " + _khachHang.Ten;
                txtMaSanPham.Enabled = true;
                btnGiaHan.Text = "Đăng ký";
                bdsTu.DataSource = BizSanPham.DanhSachTu();
                cmbTu.DataSource = bdsTu;
                cmbTu.DisplayMember = "MaSanPham";
                cmbTu.ValueMember = "MaSanPham";
            }
            else
                btnGiaHan.Enabled = false;
        }

        private void cmbLoaiThe_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_lichSu != null)
            {
                if (_lichSu.SanPham.LoaiSanPham == (int)LOAISANPHAM.The)
                {
                    var soTien = FitnessClubManager.Properties.Settings.Default.SoTienCoBanCuaThe *
                        int.Parse(cmbLoaiThe.Text);
                    txtSoTien.Text = soTien.ToString();
                }
                else
                {
                    var soTien = FitnessClubManager.Properties.Settings.Default.SoTienCoBanCuaTu *
                        int.Parse(cmbLoaiThe.Text);
                    txtSoTien.Text = soTien.ToString();
                }
            }
            else if (_khachHang != null)
            {
                var soTien = FitnessClubManager.Properties.Settings.Default.SoTienCoBanCuaTu *
                        int.Parse(cmbLoaiThe.Text) * 30;
                txtSoTien.Text = soTien.ToString();
            }
            dtpNgayHetHan.Value = dtpNgayDangKy.Value.AddMonths(int.Parse(cmbLoaiThe.Text));
        }

        private void btnGiaHan_Click(object sender, EventArgs e)
        {
            #region Kiểm tra hợp lệ dữ liệu
            errorNoti.Clear();
            if (cmbLoaiThe.SelectedIndex == -1)
            {
                errorNoti.SetError(cmbLoaiThe, "Vui lòng chọn tháng");
                return;
            }
            int temp;
            if (!int.TryParse(txtSoTien.Text, out temp))
            {
                errorNoti.SetError(txtSoTien, "Số tiền nhập sai");
                return;
            }
            if (dtpNgayDangKy.Value >= dtpNgayHetHan.Value)
            {
                errorNoti.SetError(dtpNgayDangKy, "Nhập sai ngày");
                return;
            }
            #endregion

            if (_lichSu != null)
            {
                //Gia hạn thẻ
                _lichSu.DateFrom = dtpNgayDangKy.Value.Date;
                _lichSu.DateTo = dtpNgayHetHan.Value.Date;
                _lichSu.SoTien = int.Parse(txtSoTien.Text);
                _lichSu.SoThang = int.Parse(cmbLoaiThe.Text);
                if (BizLichSuGiaoDich.GiaHanSanPham(_lichSu) == null)
                    MessageBox.Show("Không thể gia hạn", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    MessageBox.Show("Gia hạn thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.DialogResult = DialogResult.OK;
                    this.Dispose();
                }
            }
            else if (_khachHang != null)
            {
                //Đăng ký tủ
                /*
                 * Kiểm tra xem tủ khách chọn đã có ai đăng ký chưa
                 * Nếu chưa thì cho đăng ký
                 * Nếu rồi thì báo không cho đăng ký
                 */
                if (BizLichSuGiaoDich.IsChuaDangKy(cmbTu.SelectedValue.ToString(), dtpNgayDangKy.Value.Date))
                {
                    if (BizLichSuGiaoDich.Add(cmbTu.SelectedValue.ToString(), _khachHang.MaKhachHang, Program.NguoiSuDung.TenDangNhap, int.Parse(cmbLoaiThe.Text),
                        int.Parse(txtSoTien.Text), dtpNgayDangKy.Value.Date, dtpNgayHetHan.Value.Date) != null)
                    {
                        MessageBox.Show("Đăng ký thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }
                }
                else
                    MessageBox.Show("Tủ này đã có người sử dụng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnBoQua_Click(object sender, EventArgs e)
        {

        }

        private void dtpNgayDangKy_ValueChanged(object sender, EventArgs e)
        {
            //dtpNgayHetHan.Value = dtpNgayDangKy.Value.AddMonths(int.Parse(cmbLoaiThe.Text));
            cmbLoaiThe_SelectedIndexChanged(this, null);
        }

        
    }
}
